public class 第7届省赛B {
    /**煤球数目
     * 1 3 6 10 15 21
     * 层级	煤球数目
     * 第一层	1个
     * 第二层	1+2个
     * 第三层	1+2+3个
     * 第四层	1+2+3+4个
     * 第n层	1+2+```+n个
     * */
    public static void a(){
        int sum = 0;
        int num = 0;
        for (int i = 0; i <=100 ; i++) {
            num = num+i;
            sum = sum+num;
        }
        System.out.println(sum);
    }

    /**生日蜡烛*/
    public static void b(){
        for (int i = 1; i <100 ; i++) {
            int sum = 0;
            for (int j = i; j <100 ; j++) {
                sum+=j;
                if (sum==236){
                    System.out.println(i);
                    break;
                }
            }
        }
    }

    /**凑算式*/
    static int[] dict={1,2,3,4,5,6,7,8,9};
    static int [] brt = new int[9];
    static int count = 0;
    public static void c(){
        int a = dict[0];
        int b = dict[1];
        int c = dict[2];
        int def = dict[3]*100+dict[4]*10+dict[5];
        int ghi = dict[6]*100+dict[7]*10+dict[8];
        double sum = (double)a+((double)(b*ghi+c*def))/(c*ghi);//通分
        if(sum == 10.0)
        {
            count++;
            System.out.println(count);
        }
    }
    //全排列
    public static void swap(int size){
        if(size == 0)
        {
            c();
            return;
        }
        else {
            for(int i=0;i<=size;i++)
            {
                int t = dict[i];
                dict[i]=dict[size];
                dict[size] = t;
                swap(size-1);
                t = dict[i];
                dict[i] = dict[size];
                dict[size] = t;
            }
        }
    }

    /**分小组*/
    public static String remain(int[]a){
        String s = "";
        for (int i = 0; i <a.length ; i++) {
            if (a[i]==0)s+=(char)(i+'A');
        }
        return s;
    }
    public static void f(String s,int[]a){
        for (int i = 0; i <a.length ; i++) {
            if (a[i]==1)continue;
            a[i]=1;
            for (int j = i+1; j <a.length ; j++) {
                if (a[j]==1)continue;
                a[j]=1;
                for (int k = j+1; k <a.length ; k++) {
                    if (a[k]==1)continue;
                    a[k]=1;
                    System.out.println(s +" "+(char)('A'+i)+(char)('A'+j)+(char)('A'+k)+" "+remain(a));//填空
                    a[k]=0;
                }
                a[j]=0;
            }
            a[i]=0;
        }
    }

    /**抽签*/
    public static void d(int[]a,int k,int n,String s){
        if (k==a.length){
            if (n==0) System.out.println(s);
            return;
        }
        String s2 = s;
        for (int i = 0; i <=a[k] ; i++) {
            d(a,k+1,n-i,s2);//填空
            s2+=(char)(k+'A');
        }
    }
    //    main:
    //    int[]a={4,2,2,1,1,3};
    //    d(a,0,5,"");


    /**方格填数*/
    public static int num = 0 ;   //记录方案数
    public static boolean isVisit[] = new boolean[10] ; //判断一个数是否被访问过
    public static int a[][] = new int[3][4] ;   //填入方格里的数
    public static void e(int i, int j){
        if(i == 2&&j==3){   //判断是否填入最后一个格子，若是的则方案数+1
            count++ ;
        }
        for(int num = 0 ; num < 10 ;num++){ //将0到9都填入该方格，看是否可行
            if(judge(num,i,j)&&!(isVisit[num])){    //若可行
                a[i][j] = num ; //将该数填入方格
                isVisit[num] = true ;   //并且将该数字设定为以访问
                if(j==3){   //若查询到达列尾
                    e(i+1,0) ;   //递归查询下一行
                }else{
                    e(i,j+1) ;   //递归查询下一列
                }
                //重置该方格的状态，以便下一个数填入
                a[i][j] = -2 ;
                isVisit[num] = false ;
            }
        }
    }
    private static boolean judge(int num, int i, int j) {//判断相邻格子的数字是否连续
        if(i-1>=0 && (a[i-1][j] == num+1 || a[i-1][j] == num-1)){   //判断上方格子
            return false ;
        }
        if(j-1>=0 && (a[i][j-1] == num+1 || a[i][j-1] == num -1)){  //判断左方格子
            return false ;
        }
        if(i-1>=0 && j-1 >= 0 && (a[i-1][j-1] == num+1 || a[i-1][j-1] == num - 1)){ //判断左上方格子
            return false ;
        }
        if(i-1>=0 && j+1 < 4 && (a[i-1][j+1] ==num+1 || a[i-1][j+1] == num - 1)){   //判断右上方格子
            return false ;
        }
        if(j+1<4 && (a[i][j+1] == num+1 || a[i][j+1] == num-1)){    //判断右方格子
            return false ;
        }
        if(i+1<3 && (a[i+1][j] == num+1 || a[i+1][j] == num-1)){    //判断下方格子
            return false ;
        }
        if(i+1<3 && j-1>=0 && (a[i+1][j-1] == num+1 || a[i+1][j-1] == num-1)){  //判断左下方格子
            return false ;
        }
        if(i-1<0 && j+1<4 && (a[i+1][j+1] == num+1 || a[i+1][j+1] == num-1)){   //判断右下方格子
            return false ;
        }
        return true ;
    }
    // main
    // for(int i = 0 ; i < 3 ; i ++){  //初始化数据，（除了-1到10之间）的数都可行，这里初始化为-2
    //        for(int j = 0 ; j < 4 ; j++){
    //            a[i][j] = -2 ;
    //        }
    //    }
    //        for(int num = 0 ; num < 10 ; num++){//初始化所有数字均未填入
    //        isVisit[num] = false ;
    //    }
    //    e(0,1) ;
    //     System.out.println(count);

    /**剪邮票*/

    /**四平方和*/
    //    暴力破解
    //    main
    //    Scanner input =new Scanner(System.in);
    //    int num = input.nextInt();
    //    double maxNum= Math.sqrt(5000000);
    //        for (int i = 0; i <maxNum; i++) {
    //        for (int j = i; j < maxNum; j++) {
    //            for (int k = j; k < maxNum; k++) {
    //                int l=(int)Math.sqrt(num-i*i-j*j-k*k);
    //                if(i*i+j*j+k*k+l*l==num){
    //                    System.out.println(i+" "+j+" "+k+" "+l);
    //                    return;
    //                }
    //            }
    //        }

    /**取球博弈*/

    /**压缩变换*/
    //线段树






    public static void main(String[] args) {

    }
}
